=begin

This file is part of the arena-ruby-sandbox project, http://arena-ruby-sandbox.googlecode.com

Copyright (c) 2009-2009 Roberto Dario Seminara <robertodarioseminara@gmail.com>

arena-ruby-sandbox is free software: you can redistribute it and/or modify
it under the terms of the gnu general public license as published by
the free software foundation, either version 3 of the license, or
(at your option) any later version.

arena-ruby-sandbox is distributed in the hope that it will be useful,
but without any warranty; without even the implied warranty of
merchantability or fitness for a particular purpose.  see the
gnu general public license for more details.

you should have received a copy of the gnu general public license
along with arena-ruby-sandbox.  if not, see <http://www.gnu.org/licenses/>.
=end
require "introspection_disable.rb"

module RubySandbox
	class Holder < MethodlessObject

		def initialize( context_switcher, code )
			@context_switcher = context_switcher

			disable_privileges

			method_code = "def self.run_code\n
						#{code}\n
					end\n
			"
			eval(method_code)
			
		end

		def method_missing(m, *args)
			if block_given?
				@context_switcher.send(m,*args) do |*x|
					yield(*x)
				end
			else
				@context_switcher.send(m,*args)
			end
		end

	end
end
